perm filename UUO.UPD[S,DOC]16 blob sn#172424 filedate 1975-08-08 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00010 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00003 00002	This file contains corrections, additions and updates to the UUO Manual,
C00015 00003	25. THE NEW AD & DA CONVERTERS (JAM)
C00032 00004	26. The CORE2 UUO will take the direct (error) return if you ask it
C00040 00005	38.  PDP-11 INTERFACE (19-MAY-74 -- BO)
C00047 00006	39.  File protection for disk files: the "same programmer, other
C00060 00007	51. Interrupts will NOT terminate a SLEEP UUO prematurely.  The
C00063 00008	58.  Date75	11/11/74  updated 11/22/74
C00068 00009	59. XGP default margin settings
C00078 00010	[ALL ENTRIES BEFORE THIS HAVE BEEN INCLUDED IN UUO MANUAL, SECOND EDITION.]
C00082 ENDMK
C⊗;
This file contains corrections, additions and updates to the UUO Manual,
including new UUOs that have been added since the manual went to press.

1.  The only UUO spacewar processes on the PDP-6 can issue is the
    DISMIS UUO.  (I think any UUO given on the 6 has the effect of DISMIS.)

2.  On p. 126, the 2nd line of 1st paragraph should read "even" instead
    of "ever".

3.  In disk file protection key, read protection (2 bit) implies
    protection protection (4 bit) for any group of users.

4.  INTJEN UUO turns on bits in the interrupt mask, not in the interrupt
    enablings.

5.  Non-ARPA PTYs never run LOGOUT when logging out. ARPA PTYs do run
    LOGOUT. 

6.  RENAME can be done after ENTER without doing a CLOSE first unless
    the file being renamed is replacing an existing file (another file
    had same name when ENTER was done).  In that case a CLOSE must be
    done first (which will delete the original file).

7.  IOPUSH CHN,ID	;[OP=724]
    <pdlov>
    <channel pushed>

	Pushes io channel CHN on io pdl. Channel CHN may now be used
	without affecting the device you pushed. The ID is saved with
	the channel for use with IOPOP and IOPDL.

8.  IOPOP CHN,ID	;[OP=725]
    <stack empty>
    <success>

	Finds first channel on stack with ID searching down from top. If
	ID = 0 then uses top of stack. If not found, takes error return.
	Releases channel CHN, places the device from the stack into that
	channel, and compresses that entry out of the stack.

9.  IOPDL N,ID		;[OP=726]

	IOPDL 0,

		Does IOPOP for each device on the io pdl. The channel it
		uses is the same one the device was pushed from.

	IOPDL 1,

		Releases all devices from stack without affecting devices
		not currently pushed on stack.

	IOPDL 2,ID
	<error return>
	<device released>

	    Finds device with ID same as for IOPOP, then releases it
	    without affecting any other devices. The stack is compressed.

10. MOVE AC,[CODE,,JOB #]
    GETPRV AC,			;[OP=047, ADR=400115] CALLI 400115
    <always return here>

	If job # illegal, uses current job.

	CODE = 0
		Get active privileges for job #.  Return them in AC.
	CODE = 1
		Get passive privileges for job #.  Return them in AC.
	CODE = 2
		Get temporary privileges for job #.  Return them in AC.

11. TTYSKP CHN,			;[OP=047, ADR=400116] CALLI 400116

	If no device on channel CHN, "IO TO UNASSIGNED CHANNEL" error.
	If not TTY, never skip.
	If TTY, will skip if next input will not hang.

12. MOVEI AC,ADDR
    DIAL AC,			;[OP=047, ADR=400117] CALLI 400117
    <error return, error code in AC>
    <success return>

    ADDR:   DIALER #,,FUNCTION CODE
	    <any further args as needed>

    Error codes:

      0  Illegal dialer #.
      1  Dialer in use by someone else.
      2  Don't meet ownership requirements (currently, don't have TTY11
	 inited)
      3  Attempt to dial while call in progress (should hang up first)
      4  Dialing failure.

    Function codes:

	0  Claim dialer. Must be done before any other function can be
	   performed with this dialer #.

	1  Get dialer status. Returns in AC:

		<last interrupt coni>,,<current coni>

	2  Dial a number. ADDR+1 is area code in the following format:

		Bit 0	     17 18 21 22 25 26 29 30    35
		   __________________________________________
		   |	          |     |     |     |       |
	   Digit   |	          |  1  |  2  |  3  |       |
		   |______________|_____|_____|_____|_______|

	   ADDR+2 is the rest of the number in this format:

	   Bit      0   5 6 7 8  11 12 15 16 19 20 23 24 27 28 31 32 35
	           _____________________________________________________
	           |     | | |     |     |     |     |     |     |     |
	   Digit   |     |A|V|  1  |  2  |  3  |  4  |  5  |  6  |  7  |
	           |_____|_|_|_____|_____|_____|_____|_____|_____|_____|

	   A on, dial area code.

	   V on, call is "VOICE" call. Will switch to AD/DA when call
	           completed. Not implemented yet!

	3	Hang up.

	4	Release dialer (automatically done if you release TTY11).

13. LOOKUP followed by ENTER now updates date/time in UFD entry for file.

14. RUNMSK is now a no-op (may become illegal soon).

15. WHO AC,		;[OP=047, ADR=400112] CALLI 400112

    AC right should contain address of 22-word block for returned asciz
        string. 
    If AC left contains legal job #, return who line for that job as
	asciz text. 
    If AC left = 0 or > legal job #, return who line for current job.
    If AC left < 0, return system who line.
    If no job for legal job #, returns null string.

16. TTYJOB AC,		;[OP=047, ADR=400113] CALLI 400113

    If AC is 0 to max TTY line number, returns in AC the job # of owner.
    Sign bit will be on if this is not owners "console".
    If AC is -<PTY line #>, returns in AC the job # of job controlling PTY.
    All other args return 0 in AC.

17. PTYs are initialized with bits 6 (PTYLIN), 10 (PTYUSE), 13 (FCS)
    and 16 (XON) (4222,,0 bits) on in the line characteristics.  The UUO
    manual (p. 48) does not mention the FCS bit being on for a new PTY.

18. In the UUO manual on the first line of p. 148 (section 13.3), it
    should say "(bit 28)" instead of "(bit 31)" (bit to set to get error
    return instead of error message when LPT is hung).

19. IMP MTAPE 13 (Bless Host) is now a no-op since there is no longer
    a system table of dead hosts.  All hosts are assumed alive except for
    an instant after the IMP network has returned a Host Dead message in
    response to an attempt by us to send that host a message.

20. PPACT does erase all deactivated pieces of paper even on
    Data Discs.  See also note number 56 in this file.

21. When doing 8-bit byte buffered IMP output, any of the four bytes
    in the last used word in any buffer can be suppressed from being
    transmitted to the IMP by setting the corresponding bit of the low
    order four bits of the same word.  For example, if the word pointed
    to by the byte pointer in your output buffer header contains
    776655,,443307, then only the first (high-order) byte of this word
    will be transmitted.  That is,
      bit 32 (0,,10 bit) suppresses the first byte  (776000,,0 byte),
      bit 33  (0,,4 bit) suppresses the second byte (001774,,0 byte),
      bit 34  (0,,2 bit) suppresses the third byte  (3,,770000 byte),
      bit 35  (0,,1 bit) suppresses the fourth byte (0,,007760 byte).

22. The DEVNUM UUO is listed four times in the manual as CALLI 4000104
    whereas it should really be CALLI 400104 (deleting extra zero). 

23. The left half of each entry in the JOBJDA block of the job data
    area contains the channel-status bits, as returned (in the right half
    of an AC) by the CHNSTS UUO.  However, these bits and the device data
    block (DDB) address in the right half are not kept up to date by the
    system.  These cells are guaranteed correct only when your job is not
    running; they will in general also be correct if you have not done
    any I/O since the beginning of the current quantum of run time.

24. The left half of a TTY's entry in TTYTAB (see monitor pointers)
    contains the number of the next TTY in the given TTY's talk ring, if
    that TTY is in a talk ring; when a TTY is not in a talk ring, the
    left half of its TTYTAB entry contains the TTY's own line number.
25. THE NEW AD & DA CONVERTERS (JAM)

The new analog-to-digital converter (ADC) and digital-to-analog
converter (DAC) are devices on the PDP-6's IO bus which may be
operated in dump mode (17) only. They provide input and output of
digitized waveforms conventionally representing speech, music, or
other acoustical signals.

Both the DAC and the ADC can operate in a manner such that the data
transfer UUO (INPUT, or IN, for ADC, OUTPUT, or OUT, for DAC) does
not wait for the transfer to finish before returning to the user.
This feature is enabled by the 100 bit (called CONT) in the IO status
word. In this case, the user must have three separate buffers. There
is the buffer that the device is operating on, the one that is
waiting, and the one the user is operating on. If you use just two
buffers, you may find that you are operating on the same buffer the
system is operating on. As you give data transfer UUOs, the first one
will start the transfer and return immediately. The second one will
store the IOWD and return immediately. It is not until the third one
is given that the UUO will wait. It will wait for the buffer
specified by the first UUO to become free, and start the second
buffer, before it will accept the address of the third buffer and
return.

If either the ADC or the DAC loses a sample, the LOST bit (bit 2000)
is set in the IO status word. This means a discontinuity has occured
in the signal.

The ADC can be data-triggered. By setting the CYCLE bit (bit 200) in
the IO status word, the ADC does not move beyond the first buffer,
but instead transfers continuously into the first buffer. When it
gets to the end of the first buffer, it goes back to the beginning
automatically. This process continues until a sample comes in that is
larger than some threshold (user settable). When such a sample
occurs, the system goes on to the second buffer and returns to the
user the position in the first buffer that the triggering sample
occurred. For effeciency, the compare is not made with each sample in
the word, but instead with just the high-order sample. You must be in
CONT mode to guarantee continuity between the first and second
buffers.

When the ADC in CYCLE mode goes to the second buffer, the CYCDON bit
(20 bit) is set in the IO status word. You can cause the ADC to start
cycling again by clearing this bit. This is only useful if you know
which buffer it is in. It will go into CYCLE mode on the next buffer.

The ADC and the DAC can be made to start simultaneously. This is done
by turning on the IOSYNC bit (40 bit) in the IO status words of both
devices (they are different devices, require different INITs). What
happens is that the first data transfer UUO (of either device) does
not actually start the transfer. When the first data transfer UUO for
the other device is given, then both devices will begin. Note that
either UUO (ADC or DAC) can be given first. The second UUO will start
the transfer. You must be in CONT mode for the device whose UUO is
given first, or you will not return from the UUO. The system will
only wait one minute between the two UUOs.

If you are in CYCLE mode on the ADC, and in IOSYNC mode on both
devices, you can specify that the DAC is to be started after the ADC
is advanced to the second buffer and not just at the beginning of
input. This is done by setting the IOAFT bit (bit 4000) in the ADC IO
status word. This will prevent the DAC's being started until the ADC
advances to the second buffer.

The device-specific bits of the IO status word are shown below. The
asterik represents bits that are only meaningful to the ADC.

    Bits     Octal      Mnemonic       Meaning

   *24	     4000       IOAFT	       Begin DAC only after ADC has
				       moved on to second buffer, i.e.
				       IOSYNC∧IOAFT∧CYCDON ⊃ Start DAC

    25       2000       LOST           Data missed

   *28       200        CYCLE	       Causes ADC to transfer repeatedly
				       into the first buffer until
				       some input sample exceeds a
				       preset threshold.

    29       100        CONT	       Causes system to return to the
				       user immediately from a data
				       transfer UUO.

    30       40         IOSYNC         ADC and DAC will be started
				       simultaneously.

   *31       20         CYCDON         Indicates ADC has moved from
				       first input buffer to the
				       second. Only relevant in
				       CYCLE mode.

To set parameters like sampling rate, channel multiplexing, and such,
the MTAPE UUO has been drafted to serve this special function. An
MTAPE to either the ADC or the DAC has as its effective address the
address of a 3-word (2-word for DAC) block which is formatted as
follows:


	<*CYCLE threshold>,,<Speed*1000+Packing*100+Nchans>
	<address for `RUN' flag>
	<*Input select>,,<*address for CYCLE pointer>

Speed is coded as follows:

    Code     Clock rate (per channel!!!)
     0	       6.4KHz
     1	       12.8KHz
     2	       25.6KHz
     3	       51.2KHz (Highest ADC rate)
     4	       102.4KHz
     5	       204.8KHz

Packing is coded as follows:

    Code     Packing mode
     0        12-bit two's complement bytes packed 3 to a word
     1	      18-bit two's complement bytes packed 2 to a word
     2        9-bit incremental floating-point bytes packed 4 to a word
		(DAC only)

Note that the 18-bit byte has only 16 significant bits for the DAC
and only 14 significant bits for the ADC. In the DAC, the low order 2
bits of each byte are ignored. In the ADC, the low order 4 bits of
each byte are set to zero.

These packing modes are diagrammed below:

12-bit mode (code 0):
____________________________________________________________
|0                11|12              23|24               35|
|   SAMPLE 1        |     SAMPLE 2     |     SAMPLE 3      |
|___________________|__________________|___________________|

18-bit mode (code 1):
____________________________________________________________
|0                        17|18                          35|
|           SAMPLE 1        |          SAMPLE 2            |
|___________________________|______________________________|

9-bit mode (code 2, DAC only):
____________________________________________________________
|0   3|4     8|9  12|13    17|18 21|22   26|27 30|31     35|
| EX1 | MANT1 | EX2 | MANT2  | EX3 | MANT3 | EX4 |  MANT4  |
|_____|_______|_____|________|_____|_______|_____|_________|

This last mode is called Incremental floating point (abbreviated IFP
mode). Each 9-bit byte is decoded into a 4 bit exponent and a 5-bit
mantissa. The mantissa is shifted left the number of places
represented by the number in the exponent and is added into the
current position of the DAC to produce the new position. The sign bit
is inferred from the mantissa, it is not explicit. The sign bit is
taken to be the complement of the high order mantissa bit, and is
spread throughout the number before the shifting occurs.

To restate, the DAC has, for each channel, a 16 bit register, called
the FLTMEM register. These registers are cleared at the beginning of
a transfer. In IFP mode, a 9-bit byte is unpacked from the input
word. The high order 4 bits of that byte go into a counter, the low
order 5 bits go into the low-order 5 bits of a 21 bit (16+5) shift
register. The complement of the high order bit of the mantissa is
stored in the high-order 16 bits of that 21-bit shift register. This
entire register is shifted left the number of places (0 to 15)
represented by the number currently in the counter (the exponent).
The high order 16 bits of this register are then added into the
FLTMEM register for this channel and the sum is stored back into the
FLTMEM register. This sum is also delivered to the DAC.

Notice that this means that a 9-bit byte with all bits zero does not
represent a change of zero in the FLTMEM register. A zero byte will
infer a sign bit of 1, which will be spread throughout the word and
will result in a word of -1. 20 is the `official' code for zero. This
has the high order bit of the mantissa on and all other bits zero.

Nchans is decoded as follows:
    Code      Meaning
     0         unused. Currently same as 3.
     1         Monaural (1-channel only)
     2         Stereo (2 channels)
     3         Quadraphonic (4 channels)

For multiple channels, successive samples go to successive channels.
For example, in Stereo mode (code 2), the first sample goes to
channel 1, the second sample goes to channel 2, the third sample goes
to channel 1 again, the fourth to channel 2, and so on.

In CYCLE mode for the ADC, the input is directed into the first
buffer until the high order sample in a word exceeds the threshold.
This threshold is specified in the left half of the first word of the
MTAPE block.

The right half of the second word of the MTAPE block is the address
of the `RUN' flag (may be zero to inhibit feature). When the ADC or
the DAC is started, this cell is set to -1. When the ADC or DAC is
stopped, this cell is set to 0. In this manner, one can tell when his
transfer is actually occurring. Since the ADC and the DAC are given
separate MTAPEs, they can have separate RUN flags, as well as
separate clock rates, numbers of channels, and packing modes.

The third word of the MTAPE block is only relevant to the ADC. The
right half specifies the address where the buffer pointer is to
be places in CYCLE mode. What you get is the IOWD at the point
the threshold was exceeded, relocated to a relative address within
your core image. The address part of this word (the right half)
will point to the word containing the sample that exceeded the
threshold.

The left half of the third word of the MTAPE block specifies the
input multiplexing address for the ADC. Not only are there four input
channels that are serviced sequentially, but all four channels can be
switched to an alternate four inputs. This is specified by setting
the sign bit of the third word of the MTAPE block to 1. At some point
in the future, this left half may contain an honest multiplexing
address, such that input can be obtained from any of a number of
sources, but for now, you just have the four main channels and the
four alternate channels.

Neither the ADC nor the DAC take a standard monitor dump mode command
list. The effective address of the UUO points to a single IOWD. It
does not have to be followed by a zero.
26. The CORE2 UUO will take the direct (error) return if you ask it
    to make a new upper segment for you and there are no job slots
    available.

27. PTJOBX command number 7 is CLRBFI.  It has the effect of having
    done a CLRBFI for the TTY specified by the PTJOBX.

28. LOOKUP followed by ENTER updates date, time, PPN, and job name of
    creator in file retrieval.

29. New UUO: TMPCRD [CALLI 400103] (formerly XPARMS) to read TMPCOR
    files of another job.  Calling sequence is

	MOVE AC,[<code>,,ADR]
	TMPCRD AC,
	<error return>

ADR:	<filename>,,<job number>
	IOWD BLEN,BUF
	<PPN for TMPCOR file>

BUF:	BLOCK BLEN

    Just like TMPCOR but only codes 0, 1, and 4 allowed.  Illegal UUO
    if non-allowed code; error return if no such job.
    A job number of zero, or your own job number, refers to your own
    TMPCOR files; in this case, all operations are allowed, and the
    only difference from TMPCOR is that the PPN for the file comes
    from the UUO.  If ADR+2 is zero, the login PPN (not ALIAS) of the
    specified job is used.

30. Remote users may not:
    start spacewar modules; do EIOTM; or start an interrupt program in
    IOT-user mode.  Spacewar and EIOTM
    get error messages, and interrupt programs are started ok but with
    IOT-user off.

31. MTAPE to DSK where first word of arg block is neither 'GODMOD' nor
    -1 returns the value of the uset pointer.

32. Error code number 1 to INTDMP is non-existant job number.

33. If the job name or number field in the INTIPI UUO is zero then
    your own job is assumed.

34. More complete description of new-style clock interrupts:
	Clock interrupts may be enabled by turning on the INTCLK bit
    in the interrupt enablings.  This starts the clock ticking regardless
    of the state of the interrupt mask.  If the clock interrupt should
    try to occur when it is masked off, then the bit is set in JBTIRQ
    anyway, i.e., the interrupt is pending and will occur as soon as it
    is masked on.  Disabling the clock interrupt deletes the clock
    request and any pending clock interrupt.  The time between clock
    interrupts is one tick.  The CLKINT UUO enables clock interrupts and
    and sets the time between interrupts to the effective address of the
    UUO.  It no longer masks on the interrupt so that it is possible to
    do a guaranteed indivisible operation involving clock interrupts.
    Giving this UUO also flushes any pending clock interrupts that may
    exist.  If the effective address of the UUO is zero then clock
    interrupts are disabled and any pending clock interrupt is flushed. 

35. All new interrupt system UUOs that required a 1 in the ac field to
    indicate processor 1, no longer have that restriction.

36. LINE EDITOR MOD. AFFECTING PTLOAD AND INWAIT
	If the 40000,,0  bit (bit 3) in a TTY's line characteristics word
is a 1 when a PTLOAD uuo is executed for that TTY, the line editor
passes to the program every character typed on the keyboard during
the re-edit.  These characters, including the activation character
which terminates the re-edit, appear ahead of the re-edited line, and
should be read in 9-bit mode to see the control bits.  The activation
character is followed by a character code of 400 (<meta>NULL), an
otherwise impossible code; the next character will be the first of
the re-edited line. 
	An INWAIT executed after the PTLOAD will function as usual,
returning the length of the re-edited line, unless enough characters
are typed during the re-edit to nearly fill the TTY input buffer. In
this case, the program will be activated and the INWAIT will return a
length of 0; the program should then read one or more of the
characters in the buffer (but not too many, or the re-edit will be
terminated) and loop back to the INWAIT. 
	The 40000 bit may be set and cleared by SETLIN, and is
cleared by RESET. 

37. RENAME UUO can now rename a file from one PPN to another.  This capability
    is implemented in COPY (e.g., "RENAME FOO[A,B]←BAZ[C,D]" is legal).
38.  PDP-11 INTERFACE (19-MAY-74 -- BO)

Physical device name:	ELF

See IFACE.BO[11,DOC] for details about the hardware.

You may INIT this device in dump mode (mode 17).  The IN and OUT
UUO's take a single IOWD as their operand.

I/O status bits (SETSTS/GETSTS UUO's):

Bit(s)	Name	Meaning

18	IOIMPM	Improper mode specified in INIT.
19	IODERR	An error occurred during the last data transfer
			(NXM11, BUSTO, PARITY, HUNG).
20	---	unused
21	NXM11	No response from the addressed UNIBUS location.
22	BUSTO	Interface couldn't get the UNIBUS.
23	IOACT	not used
24	BUSNIT	You lost because a Unibus reset is going on.
25	PARITY	Bad parity indication
26	HUNG	Interface is hung irretrievably
27	---	unused
28	BGRAB	Interface is holding onto the UNIBUS
		(The PDP-11 is hanging).
29	NRETRY	Don't retry on NXM11 or HUNG.

30:35	have the same meaning as in any other I/O device.

If NXM11 or HUNG is on, the system has tried 10 times before giving up
unless NRETRY is on.  It always retries 10 times on BUSTO.


OTHER UUO'S

	USETI CHN,ADR	or	USETO CHN,ADR
	<only return>		<only return>

ADR:	MODE,,BUSADR

USETI and USETO set the data transfer mode and beginning UNIBUS
address for the following IN and OUT UUO's. 

If bit 0 of the word at ADR is on, the mode is set from bits 13:17.
If bit 0 is off, the mode remains as it was before.  The mode bits are

Bit(s)	Name	Meaning

13	NOPAR	Ignore parity errors
14	GRAB	Hold on to the UNIBUS during and after the transfer -
		any error condition that sets IODERR will release the bus.
15	SGNEXT	Extend the sign of input data.
16:17		Data packing mode, decoded as:
  00	ONEWD	  one PDP-11 word per word, right adjusted
  01	TWOWD	  two words per word, right-adjusted in each halfword
  10	TWOWDR	  two per word, in right 32 bits
  11	TWOWDL	  two per word, in left 32 bits.

In the two-word modes, the higher-order PDP-11 word is the one at the
first UNIBUS address.  Sign extension has no effect in TWOWDL; it
operates on each halfword separately in TWOWD. 

If bit 17 of the contents of ADR is on, the corresponding bus address
is set from bits 18:35.  If off, the address remains where the last
IN or OUT left it, pointing to the UNIBUS address immediately
following the last word transferred.  Mote that these are word, not
byte, addresses. 


	UGETF CHN,ADR
	<only return>

ADR:	<USETI word>
	<USETO word>

UGETF reads the states of the two USET pointers and modes into a
two-word block starting at ADR.  The results are stored with bits 0
and 18 on so that a subsequent USET addressed to one of these words
will set both the mode and the bus address. 


	RELEAS CHN,
	<only return>

RELEAS resets the interface and clears its interrupt enablings, and
sets the USET pointers to 400000,,400000. 


	MTAPE CHN,ADR
	<error return>
	<normal return>

ADR:	<instruction>
	<data>

MTAPE does various things depending on the contents of ADR.  ADR+1
either contains data that will be written to the 11 or receives data
read from the 11.  In case of an error, DEVIOS contains the reason.
The general form of the <instruction> is

Bits	Meaning

0:8	Operation code
9:12	unused
13:17	mode, interpreted as in a USETI or USETO
18	unused
19:35	UNIBUS address.

The mode and address of an MTAPE have no effect on the USET pointers
or the operation of subsequent IN's and OUT's, except that the BGRAB
state of the interface (and the BGRAB bit of DEVIOS) reflect the
state left by the last operation performed. 


Op code = 1:	FILL
	<data> = <number>,,<const>

    Writes <const> into <number> words beginning at the specified address.
    Ignores mode bits 16:17.


Op code = 2:	PEEK

    Reads one or two PDP-11 words (depending on the mode) into ADR+1.


OP code = 3:	POKE

    Writes <data> into one or two PDP-11 words.


Op code = 4:	BUSREL

    Clears the interface, making it release the UNIBUS if it is in BGRAB
    mode.  BUSREL also clears the BGRAB bit in DEVIOS.  The mode and
    Bus Address bits are ignored.


Other MTAPE's for poking buttons on the console will be added when
the hardware is built. 
39.  File protection for disk files: the "same programmer, other
project" category is no longer used.  Instead, the three categories
of protection are file owner (700 bits), other local users (070
bits), and other remote users (007 bits).  The meaning of individual
bits is unchanged within each category for files other than UFDs.
The bits in the protection code for a UFD now affect protection for
files in that UFD, i.e., 4 bit prevents protection change for all
files in the UFD, 2 bit prevents LOOKUPs in the UFD and also prevents
reading the UFD as a file, and the 1 bit prevents ENTERs and RENAMEs
(except protection change) in the UFD.  As in the file protection
code, the 400 and 200 bits are ignored by the monitor.  ENTER or
RENAME of a UFD is illegal except that privileged programs (i.e.,
LOGIN and LOGOUT) can create new UFDs or delete old ones.  Only the
owner of a UFD can change its protection (except for privileged
programs).  Anyone may read the MFD but no one may modify it.  Also,
there is a "default file protection code" associated with each UFD.
An ENTER of a new file with a user-specified protection of zero uses
this default value.  An ENTER which is replacing an existing file
retains the old protection code if the user-specified code is zero.
The default file protection code for a UFD can only be set by LOGIN.
The values used for new UFDs are 005 for the UFD protection and 000
for the default file protection.  Thus remote users may not write
files in most UFDs. 

40.  The IMPBIT in the line characteristics word for a terminal (1000,,0)
can be set but not cleared by the user (by SETLIN or PTSETL).  That is,
once you set it, you're stuck with it.

41.  Anything which unpurifies an upper segment (e.g., UNPURE UUO) also
changes its jobname by shifting it right one character (six bits), so
that the pure, sharable version will still have a unique name.

[42 is obsolete now!!!!!]
42.  Bit 29 (100) must be on in any INIT, OPEN or SETSTS to the UDP to
denote old-format UDP service.  (A new format is being planned.)
[No longer true!!!]

43.  Error reponse from the XGP/Font Compiler has been expanded.
Case of MTAPE function 0,  ADR+1 contains 4,  ADR+2 contains 3, and
if ADR+2 contains either 3, 4 or 7 then ADR+3 will contain the octal
value of the last character assembled (or possibly the current character
being assembled).

44.  P121 FBWRT UUO.  Should say MOVEI AC,<band number> rather than
MOVEI AC,<logical fast band number>

45.  P122 next to last line.  Should read ....  If you
rather than ...  If you have

46.  The DEVCHR UUO for a UDP now returns bits 18 and 19 as the OR of the
ASSCON and ASSPRG bits of all DDBs for that UDP.  Bit 12 (available to
this job) is also set properly, i.e., the bit is on if the UDP is unused,
public, or private and owned by this job.  Note that in a DEVCHR for DSK
or IMP, bits 18 and 19 will always be zero, since they are copied out of
the model DDB.  If the UDP is in new mode (see 48 below), the DVDSK bit
(bit 1) will be on as well as the DVUDP bit (bit 2).

47.  The DEVUSE UUO for a UDP returns, in bits 12:17, the job number of
the UDP's owner, if any.  A zero in this field but bit 0 on MAY NOT
mean detached from system for a UDP, but rather assigned as public.
To be sure, check bit 7, which will be on for detached UDPs.  The
following extra bits are set for UDPs:
	3   40000,,0   ASSIGNed by this job
	4   20000,,0   INITed by this job
	5   10000,,0   ASIGNed by some other job
	6    4000,,0   INITed by some other job
	7    2000,,0   ASSIGNed as PRIVATE pack (by someone)
If bits 12:17 are zero, and bits 6 and 7 are one, the UDP is being used
as the swapping device.  Again, note that the information returned for
DSK or IMP is wrong.

48.  UDPs may now be used in "old" or "new" mode.  Old mode is like
before; new mode is just like DSK, with the following exceptions:
a.  MTAPEs which refer to absolute disk addresses are taken relative
to the first track (the SAT track) of the particular UDP used, and
are limited to the extent of that one UDP.  (DSK MTAPEs still allow
all tracks to be used, including UDP tracks.)
b.  The SATID for a UDP is a SIXBIT name which is intended to agree
with the name written on the pack label.  This is not to be confused
with the UDP password.
c.  The last track of the UDP is still used for a password, as in
old mode; however, the password need not be given for new-mode
operations, which are protected by the same scheme as on DSK.  The
UDP password is also stored as the [1,1] password.
	It is illegal to INIT a UDP unless you have ASSIGNed it
first.  The ASSIGN command for UDP, unlike other devices, does not
necessarily prevent access by other users.  There are three ways
of ASSIGNing a UDP:
    PUBLIC -- new mode, other jobs may use the UDP.
    PRIVATE -- new mode, other jobs may not use the UDP.
    OLD -- old mode, other jobs may not use the UDP.
(The syntax of the ASSIGN command is ASSIGN [mode] dev [logname] ;
items in brackets are optional, default mode is PUBLIC.)  The
mode may be changed between PUBLIC and PRIVATE by new ASSIGN
commands except that you must be the only user of the UDP to make
it PRIVATE.  However, to change between old and new modes, you
must first deassign the UDP (there must be no DDBs for it).
The mode specified in the ASSIGN command controls the use of the
UDP; hence, the 100 bit in the INIT is no longer used.
	A pack to be used in new mode must first be formatted.
(I.e., must have SAT and MFD.)  Once a pack has been formatted,
attempts to write on it in old mode will fail unless you have
UDPPRV.  Old mode reading is ok.  (So much for read protecting
UDP files.)  Attempts to read or write in new mode on an
unformatted UDP will, of course, fail.
	The scratch/swapping pack has password *SWAP*.  This
password is treated specially by the monitor in two ways: a zero
password is accepted in an old-mode ENTER, and it is impossible
to change the password (old-mode RENAME will fail).

49.  Two new MTAPEs for DSK and file-structured UDP:
	MTAPE CHN,[	'GODMOD'
			22
			ADDR]
will store the number of free tracks on the UDP (or in the file
system for DSK) as typed by the RESO command.  This is the number
of tracks before the monitor will not allow an ENTER, which is
=200 tracks before the structure is really full.  Also,
	MTAPE CHN,[	'GODMOD'
			23
			ADDR]
stores the SATID of the structure.  Both store into user address ADDR.

50.  Device VOD		REG 8/16/74

The voice synthesizer (VODER) has device name VOD.  Mode 10 (octal)
is the only legal mode.  The buffer size is 20 (decimal) data words.
The data in the user's buffer is sent directly to the voder.

The Voder interface interprets each word as four 9-bit bytes.  The
400 bit of each byte is the valid bit. The other eight bits represent
a phoneme.  Care should be taken to avoid the phoneme with value zero,
because this will cause the voder to stop, and the rest of the buffer-full
will not be transmitted until later, and data may become lost.

For a description of the correspondence between phonemes and byte-values,
see section 21 of the facility manual, FACIL.TED[H,DOC]

DEVCHR of VOD is DVOUT and a bit for mode 10.  There is no special DEVCHR
bit for the voder.  Only the UUOs  OPEN (and INIT), OUT (and OUTPUT),
CLOSE and RELEAS are valid for the voder.  LOOKUP, ENTER, RENAME, and MTAPE
are no-ops.

51. Interrupts will NOT terminate a SLEEP UUO prematurely.  The
    SLEEP will run to completion unless a UWAIT is done at
    interrupt level when the SLEEP is in progress.  The comment
    in the manual under the SLEEP UUO that says an interrupt
    will terminate the SLEEP immediately is WRONG.

52. The definitions on pp. 104-105 of the manual of the bits
    INTPTO and INTPTI are reversed.  The descriptions of what
    the bits mean are correct, but the bit values are interchanged.
    INTPTO is really bit 8 (1000,,0) and INTPTI is bit 5 (10000,,0).

53. When a new job is started up with the SWAP UUO, the privilege bits
    of the old job are copied to the new job if the new job is getting
    the login PPN of the old job.  Otherwise, the new job's privileges
    are cleared.

54. Correction to manual. Mode 16 for MTAs is exactly the same as mode 17.

55. In Appendix 1 of the UUO Manual (III Display Processor), under
    the CHR Instruction on p. 191, change the character octal 177 generates
    to a Circumflex (instead of a backslash).

56. The PPSEL UUO normally does a PPACT with only the newly selected PP
    activated.  This can now be inhibited by turning on the 400000 bit in
    the PP number.  Thus PPSEL 1 will do a PPACT 200000 but PPSEL 400001
    will not.  Also, contrary to what the manual says, PPACT on a Data
    Disc does erase any PPs turned off (de-activated).

57. Clarification: The suppress Control-CR (set via SETACT) is effective
    even if the terminal is not in special activation mode.  Same goes for
    other special low-order bits in the last word of activation table.

58.  Date75	11/11/74  updated 11/22/74

January 4, 1975 is the last date representable in the old PDP-6 format
date field.  The following changes have been implemented to extend the
dates for an additional 77 years.

1. DATE UUO [CALLI 14]
        returns a 15 bit date, instead of 12 bits as previously documented.

2. Disk file dates
	LOOKUP and RENAME have been changed to use bits 18-20 of
	the second (extension) word of the argument block as the high bits
	of the date last written.  The low bits of the date last written
	are bits 24-35 of the third word.

3. Dectapes (PDP-6 format)
	LOOKUP returns the date in bits 24-35 of the third word
	and bits 18-20 of the second word.
	RENAME accepts a date in the same format.
	ENTER ignores the date entirely; files always get their
	date set to the current date by ENTER.

	Note that the 15-bit date will actually be stored in bits
	21-35 of the third word of the directory entry, and the split
	field in LOOKUP and RENAME arguments is only for compatability
	with the disk UUOs.  Note that people who try to interpret the
	data returned by LOOKUP should avoid being confused by the high
	order date field which is returned in (bits 18-20 of) the halfword
	which formerly contained only the first block number of the file (now
	confined to bits 21-35).

	ENTER, by the way, returns the block number of the first block of
	the file in bits 21-35 of the second word.

4. Dectapes (PDP-10 format)
	The extra date bits are smeared in the extra bit of the slot words.
	The format is too horrible to explain here, see REG if you really
	want to know.  This affects only user programs since pdp-10 dectapes
	are not supported by the system.  The programs 	6TO10, 10TO6, and
	DMAN are NOT supported and will be not be converted.  TENDMP will
	be supported for PDP-10 dectape manipulation.

5. DSKTIM UUO
     [Added 11/21/74]  This UUO does NOT and will not return the correct
     date after Jan 5, 1975.  The date field returned by this UUO is
     constrained to 12 bits.  For a single UUO to get the date and time
     (in seconds) use ACCTIM.  The DSKTIM UUO will shortly be made illegal.

Conversion of programs to DATE75.

The following rules should be followed:

	ENTER
	The only date field that's relevant is the creation date in bits
	21-35 of the extension word (disk only).  If you wish to set the
	creation date use this field, otherwise zero it.

	LOOKUP
	works as before; if you want to print the file's date last written
	you must get that date from two words returned by LOOKUP.

	RENAME
	To get the default date and time, zero bits 9-35 in the third word, and
	bits 18-20 in the second word.  Otherwise, set these fields explicitly.
59. XGP default margin settings

LMAR	 200
RMAR	1650	may vary with number of raster points/scan-line
TMAR	 200
PMAR	1802	varies with the number of scan-lines/inch
BMAR	 200
XLINE	   4

The numbers above are all in decimal.  Parameter names correspond to
XSPOOL switches.  Some parameters are subject to change as the
physical charateristics of the XGP change.  Parameters are changed
manually, so if you observe the XGP making short pages, etc., tell
REG or anyone else who knows how to change these settings

Nominally, the XGP has 200 raster points/inch horizontally, and 200
scan-lines/inch vertically. 

The horizontal sweep is known to be non-linear, so if you're trying
to do exact graphics you'll probably lose. 

60. A clarification about dectapes (PDP-6 format).  REG 11/19/74
When an ENTER is done, if the fourth word is negative, it is assumed
to contain the IOWD for writing a DMP file.  Note that DMP files
are written differently than other files on a dectape.

Normal files are written 127 words/block with a 1 word header that points
to the next block of the file (always the next block on the tape, or zero).
DMP files are written 128 words/block and always in consecutive blocks
and the IOWD for retreiving the file is in the directory.

60.  In 8-bit IMP input, unused bytes in the last data word are flagged
by bits turned on in the four normally unused bits (32-35) with the
same significance as for IMP output (item 21, page 2).  The value of
such unused bytes will always be zero, as before, so only programs for
which zero bytes are significant need worry about this.

61.  Two new XGP escape sequences:
177 1 50	accepts the next byte as the intercharacter spacing.
	Note this command is currently a no-op and is included for
	compatibility with MIT.

177 1 51	is like stop underline (177 1 47) except the first
	byte following the 51 allows the user to specify how thick
	the underline will be.


62.  Documentation error in description of bit 4 of function code
for data disk command word.  In text mode, Bit 4 ON means double
width, OFF means single width.  (The picture on page 199 is right)

63.  Once the UDP has been assigned in PUBLIC mode, any job may
INIT or OPEN it without having to ASSIGN it itself.

64.  Additional discussion of XGP error codes (REG 12/30/74)
XGPSER missed error (code 12 from error status MTAPE) returns
in ADR+2 the current scan line, and in ADR+3 the desired scan line
number for the text or vector that missed.   XGPSER is not able to
queue text or vectors for scan line 0 of the first page of a transfer.
If it's necessary to queue things on scan line 0, it's advised that
a page be output prior to that attempt.

65.  The TMPCOR and TMPCRD UUOs allow two new function codes, 6 and 7,
which are like 4 and 5 respectively (read directory, read and clear
directory) with the following differences:
     a.  All TMPCOR files for the specified job are listed, regardless
of alias (and deleted in function 7).
     b.  The directory list returned contains two words per file; the
first is the file's alias PPN, and the second is its name and size as
in the normal directory list.  The AC specified in the TMPCOR UUO gets
the number of TMPCOR files, as usual.

66.	Mode '1000 in LPTSER suppresses the TODF (top of double form)
that precedes the first output following CLOSE and the three TODFs that
occur at RELEAS.  The suggested use for this mode is by programs that
use special forms (e.g., labels).  Users of this feature should explicity
send a TODF ('177&'021) to the LPT before RELEAS to initialize the LPT
for the next user.

67.	The description of JOBSYM (on page 206) should be corrected:

change

  "the left half of this word contains the negative of the number of
symbols"

to

  "the left half of this word contains the negative of the length of
the symbol table"

68.	The SWAP UUO when used to write a DMP file changes JOBNAM to
the name of the file it writes.

69.  The NULMES UUO (CALLI 400114) is just like TTYMES with the following
exceptions:
--The count field must be nonzero.
--A zero byte does not end the text, but is simply ignored.  (It is
  included in the count.)
--If the error (direct) return is taken, the AC containing the argument is
  set to zero if the UUO failed because the TTY could not be found (no
  such device, not a TTY, couldn't get a DDB); otherwise it is set to the
  number of characters remaining to be sent.  Thus the user can recover
  from a temporary jam in the output buffer.

70.  Magtape MTAPE uuo.  If bit 40 is set in the effective address then the
"slice level" will be set from bit 20.  Setting the slice level may enable
some tapes to be read which otherwise had errors.  Also, setting the slice
level may be used as a maintenance feature.  RELEAS uuo (or MTAPE 40) will
clear the slice level to normal.
[THIS FEATURE (70.) HAS BEEN DISABLED.  USER CAN NO LONGER SET SLICE LEVEL.]

71.  If you do an UNPURE uuo after having done a SETPR2, then the following
will happen:
	1.  if you did an absolute SETPR2, then nothing is changed and the
	    direct return is taken.
	2.  if you did a relative SETPR2, then the write protection is cleared
	    for you second protect and relocate register and the skip return is
	    taken.
Correction to description of SETUWP uuo:  if the job has no upper segment
and hasn't done a SETPR2, then direct (non-skip) return is taken.  If the
job has done a SETPR2, then a SETPR2 is done with the original parameters
and with the write protect bit in the requested state.

72.  The 10000,,0 LINTAB bit, which formerly meant "model 37" (ha ha), now
indicates that characters less than 40 should be echoed (and output) as
uparrow followed by the character 100 greater than the real character,
except for 0 (null, not output), 7 (bell), and 11-15 (the format effectors).
This bit is initially on for TTY0-TTY11.  It is ignored for Data Disc and
III displays.  It can be set or cleared by SETLIN and PTSETL or by the
monitor commands TTY ARROW and TTY NO ARROW.
[ALL ENTRIES BEFORE THIS HAVE BEEN INCLUDED IN UUO MANUAL, SECOND EDITION.]

73. The PTLOAD UUO now takes any text typed by the user before or during
the PTLOAD and writes it into the line editor after the PTLOAD is over,
in such a way that no timing error is possible.  A new UUO, PTL7W9
(PTYUUO 17,) allows the simulation of user typeahead; the format is

	PTL7W9 ADR
	<adr>

ADR:	<PTY number as for PTLOAD, usually 0>
	<address of, or byte pointer to, 7-bit ASCII string as for PTLOAD>
	<address of, or byte pointer to, 9-bit string of simulated typeahead>

The 9-bit string must be terminated with null (000).  The UUO loads the
7-bit string pointed to by ADR+1, positions the cursor to the beginning
of the line, then simulates typing of the 9-bit string pointed to by ADR+2,
then simulates typing of any characters which the user had typed while
all this was going on.

To make this work, a new TTY IOS bit is used: PTLIP (4000,,0) for
PTLOAD in progress.  The bit is on during a PTLOAD and diverts user
typeahead to a special buffer.

74. The 0,,10 bit in the fourth word of a SETACT argument (the bit name
is EMODE) causes a meta-null (400) character to be inserted in the TTY
input buffer after each line editor activation, following all characters
activated.  Thus when an activation character is typed in the middle of
a line, the program can find out where the line ends.  The 400 is an
activation character, in the sense that all of the text up to and including
it will be available to INCHWL.  (Normally when the line editor is
activated by a character other than return in the middle of the line,
the program can only read (with INCHWL) up to the activation character,
not up to the end of the line, until another activation character is
typed.)  Despite its use of a 400 code, this feature is not to be
confused with losing Poole mode.

75. The UPGIOT UUO effectively does a PGSEL for the POG in the UPGIOT.